package com.ysu.his.dispensary.mapper;

import com.ysu.his.dto.PrescriptionDto;
import com.ysu.his.entity.dispensary.DispenseRecord;
import com.ysu.his.entity.dispensary.RefundRecord;
import com.ysu.his.entity.prescription.Prescription;
import com.ysu.his.vo.PrescriptionVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

/**
 * 处方相关数据库操作接口
 */
@Mapper
public interface PrescriptionMapper {
    /**
     * 分页条件查询处方
     * @param prescriptionDto 查询条件
     * @return 处方列表
     */
    List<Prescription> getPrescriptionByPage(PrescriptionDto prescriptionDto);

    /**
     * 根据处方ID查询处方信息
     * @param id 处方ID
     * @return 处方信息
     */
    Prescription getPrescriptionById(Long id);

    /**
     * 根据处方ID查询处方详情（包含患者和医生姓名）
     * @param id 处方ID
     * @return 处方详情
     */
    PrescriptionVo getPrescriptionVoById(Long id);

    /**
     * 更新处方状态
     * @param prescription 处方信息
     * @return 更新行数
     */
    int updatePrescriptionStatus(Prescription prescription);

    /**
     * 插入发药记录
     * @param dispenseRecord 发药记录
     * @return 插入行数
     */
    int insertDispenseRecord(DispenseRecord dispenseRecord);

    /**
     * 插入退药记录
     * @param refundRecord 退药记录
     * @return 插入行数
     */
    int insertRefundRecord(RefundRecord refundRecord);

    /**
     * 查询处方的退药申请记录
     * @param prescriptionId 处方ID
     * @return 退药记录列表
     */
    List<RefundRecord> getRefundRecordsByPrescriptionId(Long prescriptionId);

    /**
     * 根据ID查询退药记录
     * @param id 退药记录ID
     * @return 退药记录
     */
    RefundRecord getRefundRecordById(Long id);

    /**
     * 更新退药记录
     * @param refundRecord 退药记录
     * @return 更新行数
     */
    int updateRefundRecord(RefundRecord refundRecord);
} 